One-time programmable memories are memory elements capable of writing data only once, which can be categorized into fuse type or anti-fuse type. Conventional one-time programmable memories, regardless of whether they are of fuse type or anti-fuse type, have two terminals for applying a voltage or causing a current to flow. In the initial state, the resistance between the two terminals of a one-time programmable memory of fuse type is low. If a predetermined voltage is applied or a predetermined current is caused to flow between the two terminals, the resistance becomes high. In contrast, in the initial state, the resistance between the two terminals of a one-time programmable memory of anti-fuse type is high, and if a predetermined voltage is applied or a predetermined current is caused to flow between the two terminals, the resistance becomes low.
The anti-fuse type one-time programmable memories typically include MOS transistors, in which the source, the drain, and the well are short-circuited. A predetermined voltage is applied between the short-circuited terminals and the gate to cause a breakdown of a gate insulating film, thereby changing the resistance between the terminals to be low.
One-time programmable memories of this type are well known, but have the following problem. The number of terminals to which a voltage can be independently applied is only two, the gate and the terminal obtained by short-circuiting the source, the drain, and the well. For this reason, if one-time programmable memories are arranged in a column direction and a row direction to form an array, it may be difficult to write data only to a selected memory. In order to prevent erroneous writing to unselected one-time programmable memories, one or more selectors (for example, transistors or diodes) are needed for each one-time programmable memory. As the number of memory elements increases, the number of selectors also increases. This expands the area of the entire chip.